package org.edu.modules.growth.controller;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.edu.common.api.vo.Result;
import org.edu.common.system.base.controller.BaseController;
import org.edu.modules.growth.dto.VeJsczSummaryConfigDTO;
import org.edu.modules.growth.entity.VeJsczConfig;
import org.edu.modules.growth.service.IVeJsczConfigService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@Api(tags="系统设置--年终总结提交配置管理")
@RestController
@RequestMapping("summaryConfig")
@Slf4j
@AllArgsConstructor
public class VeJsczConfigController extends BaseController<VeJsczConfig, IVeJsczConfigService> {

    private IVeJsczConfigService mIVeJsczConfigService;

    /**
     * 查询当前年终总结配置
     */
    @ApiOperation(value = "获取年终总结配置")
    @PostMapping("/currentSummaryConfig")
    public Result<VeJsczSummaryConfigDTO> currentSummaryConfig( ) {
        return Result.OK(mIVeJsczConfigService.getCurrentConfig());
    }

    /**
     * 新增或修改配置
     */
    @ApiOperation(value = "新增或修改年终终结提交时间配置",notes = "新增或修改配置")
    @PostMapping("/addOrUpdate")
    public Result<?> addOrUpdate(@RequestBody VeJsczSummaryConfigDTO veJsczSummaryConfigDTO) {
        // 时间校验
        if( veJsczSummaryConfigDTO.getBeginTime() >= veJsczSummaryConfigDTO.getEndTime()){
            return Result.error("提交时间设置有误！") ;
        }else{
            Map<String,Object> map = Maps.newHashMap() ;
            map.put("name","summary");
            List<VeJsczConfig> list = mIVeJsczConfigService.listByMap(map) ;
            VeJsczConfig config = new VeJsczConfig() ;
            config.setData(JSON.toJSONString(veJsczSummaryConfigDTO)).setName("summary") ;
            if( !CollectionUtils.isEmpty(list)){
                mIVeJsczConfigService.updateById( config ) ;
            }else{
                mIVeJsczConfigService.save(config);
            }
        }
        return Result.OK("操作成功！");
    }


}
